package com.vehiclemanagement.service;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 报表分析服务接口
 */
public interface ReportService {

    /**
     * 获取车辆使用统计数据
     *
     * @param vehicleId 车辆ID
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 车辆使用统计数据
     */
    List<Map<String, Object>> getVehicleUsageStatistics(Long vehicleId, LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 获取车辆费用统计数据
     *
     * @param vehicleId 车辆ID
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 车辆费用统计数据
     */
    List<Map<String, Object>> getVehicleCostStatistics(Long vehicleId, LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 获取驾驶员工作统计数据
     *
     * @param driverId  驾驶员ID
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 驾驶员工作统计数据
     */
    List<Map<String, Object>> getDriverWorkStatistics(Long driverId, LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 获取违章统计数据
     *
     * @param year  年份
     * @param month 月份
     * @return 违章统计数据
     */
    List<Map<String, Object>> getViolationStatistics(Integer year, Integer month);

    /**
     * 获取事故统计数据
     *
     * @param year  年份
     * @param month 月份
     * @return 事故统计数据
     */
    List<Map<String, Object>> getAccidentStatistics(Integer year, Integer month);

    /**
     * 获取加油统计数据
     *
     * @param year  年份
     * @param month 月份
     * @return 加油统计数据
     */
    List<Map<String, Object>> getFuelStatistics(Integer year, Integer month);

    /**
     * 获取ETC费用统计数据
     *
     * @param year  年份
     * @param month 月份
     * @param type  类型：1-通行，2-停车
     * @return ETC费用统计数据
     */
    List<Map<String, Object>> getETCStatistics(Integer year, Integer month, Integer type);

    /**
     * 获取维修保养统计数据
     *
     * @param year  年份
     * @param month 月份
     * @param type  维修保养类型
     * @return 维修保养统计数据
     */
    List<Map<String, Object>> getMaintenanceStatistics(Integer year, Integer month, Integer type);

    /**
     * 获取年检统计数据
     *
     * @param year  年份
     * @param month 月份
     * @param type  年检类型
     * @return 年检统计数据
     */
    List<Map<String, Object>> getInspectionStatistics(Integer year, Integer month, Integer type);

    /**
     * 获取车辆综合分析数据
     *
     * @param vehicleId 车辆ID
     * @return 车辆综合分析数据
     */
    Map<String, Object> getVehicleAnalysis(Long vehicleId);

    /**
     * 获取驾驶员综合分析数据
     *
     * @param driverId 驾驶员ID
     * @return 驾驶员综合分析数据
     */
    Map<String, Object> getDriverAnalysis(Long driverId);

    /**
     * 获取费用分布统计数据
     *
     * @param year  年份
     * @param month 月份
     * @return 费用分布统计数据
     */
    List<Map<String, Object>> getCostDistribution(Integer year, Integer month);

    /**
     * 获取总体运营成本分析
     *
     * @param year 年份
     * @return 总体运营成本分析数据
     */
    Map<String, Object> getOperationCostAnalysis(Integer year);
} 